{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> https://www.kaggle.com/omarelgabry/a-journey-through-titanic"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 导包\n",
    "- pandas, numpy, matplotlib, seaborn, sklearn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Imports\n",
    "\n",
    "# pandas\n",
    "import pandas as pd\n",
    "from pandas import Series,DataFrame\n",
    "\n",
    "# numpy, matplotlib, seaborn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "sns.set_style('whitegrid')\n",
    "%matplotlib inline\n",
    "\n",
    "# machine learning\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.svm import SVC, LinearSVC\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.naive_bayes import GaussianNB"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 导入数据\n",
    "- 存储为DataFrame格式\n",
    "- 查看数据的前几行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titanic_df = pd.read_csv(\"Data/train.csv\")\n",
    "test_df    = pd.read_csv(\"Data/test.csv\")\n",
    "\n",
    "# preview the data\n",
    "titanic_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 查看数据的信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      "PassengerId    891 non-null int64\n",
      "Survived       891 non-null int64\n",
      "Pclass         891 non-null int64\n",
      "Name           891 non-null object\n",
      "Sex            891 non-null object\n",
      "Age            714 non-null float64\n",
      "SibSp          891 non-null int64\n",
      "Parch          891 non-null int64\n",
      "Ticket         891 non-null object\n",
      "Fare           891 non-null float64\n",
      "Cabin          204 non-null object\n",
      "Embarked       889 non-null object\n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.6+ KB\n",
      "----------------------------\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 418 entries, 0 to 417\n",
      "Data columns (total 11 columns):\n",
      "PassengerId    418 non-null int64\n",
      "Pclass         418 non-null int64\n",
      "Name           418 non-null object\n",
      "Sex            418 non-null object\n",
      "Age            332 non-null float64\n",
      "SibSp          418 non-null int64\n",
      "Parch          418 non-null int64\n",
      "Ticket         418 non-null object\n",
      "Fare           417 non-null float64\n",
      "Cabin          91 non-null object\n",
      "Embarked       418 non-null object\n",
      "dtypes: float64(2), int64(4), object(5)\n",
      "memory usage: 36.0+ KB\n"
     ]
    }
   ],
   "source": [
    "titanic_df.info()\n",
    "print(\"----------------------------\")\n",
    "test_df.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 删除一些不必要的属性，因为在分析和预测中没什么用\n",
    "- 'PassengerId','Name','Ticket'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "titanic_df = titanic_df.drop(['PassengerId','Name','Ticket'], axis=1)\n",
    "test_df    = test_df.drop(['Name','Ticket'], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 对各个特征进行处理\n",
    "## 1. Embarked\n",
    "- 乘客从哪个地方登上泰坦尼克号\n",
    "- 使用出现最多的S进行缺失值填充\n",
    "- 删除embarked列，因为对预测没有多大贡献，同时使用get_dummies把CQ进行编码，删除S"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd299cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3kAAAE8CAYAAAB9+ngjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYXGWd9/93BxIiJAQjjwgaAZX5mhFheJohgCgBQR5B\nB0TFB5R12JTVhUWJOir8ABGUIGtAQkAgmBHECCIjhCXIYisDPJIvhBFBEVQckrAkkKR/f5wKU4Sk\nu5NU9ak69X5dV1/UWar606ebO+d7zn3uu6u3txdJkiRJUjUMKTuAJEmSJKlxLPIkSZIkqUIs8iRJ\nkiSpQizyJEmSJKlCLPIkSZIkqUIs8iRJkiSpQlYvO8DK6Onpcd4HqYK6u7u7ys6wKmybpOqyfZLU\nipbXNrVlkQfQ3d1ddgRJDdTT01N2hIawbZKqx/ZJUivqq22yu6YkSZIkVYhFniRJkiRViEWeJEmS\nJFWIRZ4kSZIkVYhFniRJkiRViEWeJEmSJFWIRZ4kSZIkVYhFniRJaqh77rmH7bbbjn333ffVryuu\nuKLf93zta19b4e914okncv/996/Qe8455xx+9rOfrfD3kqR20baToUuSpNa144478s1vfrPsGJLU\nkSzyJElS0/3xj3/kuOOOY5111uHPf/4ze++9N7feeitPPvkk3//+9wGYNWsW+++/Py+99BJf/vKX\n2WKLLZg0aRIzZ85k7ty57Ljjjhx55JHsu+++jB49mjXXXPPVz7/pppu47rrrOPvss7nnnns499xz\ngaLYPPTQQ5k1axYTJkxgxIgRLFq0iHe84x2lHAdJGgwWeZIkqeFuueUWfv/737+6fMwxx/DMM89w\n2WWXcfvttzNlyhSmTJnCZZddxm233cbYsWMZMmQIP/jBD3jqqaf40pe+xJVXXgnA5MmTefnll9lt\nt9048sgjAdh7773ZeuutOfHEE5kxYwazZs1i4sSJrL766px++ulcffXVrLXWWnz2s5/lscce45xz\nzuFb3/oWY8eOffUzJKmqKlnk7XP8D8uO0BKu/Pany44gSapphX+bBvPfhaW7a/7xj39k4403Ztiw\nYYwcOZKNNtoIgJEjR/K3v/0NgM0335zVVluNMWPGMG/ePIYMGcJLL73EF7/4RUaMGMErr7zy6udt\nvPHGr76+77776O3tZfXVV+e///u/eeaZZ/jsZz8LwNy5c3niiSd4/PHHefe73w3AZptt1uwfXx3q\n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\nA2NcKvR/C3kLAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc900c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "titanic_df[\"Embarked\"] = titanic_df[\"Embarked\"].fillna(\"S\")\n",
    "\n",
    "# plot\n",
    "sns.factorplot('Embarked','Survived', data=titanic_df,size=4,aspect=3)\n",
    "\n",
    "fig, (axis1,axis2,axis3) = plt.subplots(1,3,figsize=(15,5))\n",
    "\n",
    "sns.countplot(x='Embarked', data=titanic_df, ax=axis1)\n",
    "sns.countplot(x='Survived', hue=\"Embarked\", data=titanic_df, order=[1,0], ax=axis2)\n",
    "\n",
    "# group by embarked, and get the mean for survived passengers for each value in Embarked\n",
    "embark_perc = titanic_df[[\"Embarked\", \"Survived\"]].groupby(['Embarked'],as_index=False).mean()\n",
    "sns.barplot(x='Embarked', y='Survived', data=embark_perc,order=['S','C','Q'],ax=axis3)\n",
    "\n",
    "embark_dummies_titanic  = pd.get_dummies(titanic_df['Embarked'])\n",
    "embark_dummies_titanic.drop(['S'], axis=1, inplace=True)\n",
    "\n",
    "embark_dummies_test  = pd.get_dummies(test_df['Embarked'])\n",
    "embark_dummies_test.drop(['S'], axis=1, inplace=True)\n",
    "\n",
    "titanic_df = titanic_df.join(embark_dummies_titanic)\n",
    "test_df    = test_df.join(embark_dummies_test)\n",
    "\n",
    "titanic_df.drop(['Embarked'], axis=1,inplace=True)\n",
    "test_df.drop(['Embarked'], axis=1,inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Fare\n",
    "- 船票费用\n",
    "- 只有test数据中有缺失值，用中位数填充"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xdcfaf98>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc928da0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd299898>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# only for test_df, since there is a missing \"Fare\" values\n",
    "test_df[\"Fare\"].fillna(test_df[\"Fare\"].median(), inplace=True)\n",
    "\n",
    "# convert from float to int\n",
    "titanic_df['Fare'] = titanic_df['Fare'].astype(int)\n",
    "test_df['Fare']    = test_df['Fare'].astype(int)\n",
    "\n",
    "# get fare for survived & didn't survive passengers \n",
    "fare_not_survived = titanic_df[\"Fare\"][titanic_df[\"Survived\"] == 0]\n",
    "fare_survived     = titanic_df[\"Fare\"][titanic_df[\"Survived\"] == 1]\n",
    "\n",
    "# get average and std for fare of survived/not survived passengers\n",
    "avgerage_fare = DataFrame([fare_not_survived.mean(), fare_survived.mean()])\n",
    "std_fare      = DataFrame([fare_not_survived.std(), fare_survived.std()])\n",
    "\n",
    "# plot\n",
    "titanic_df['Fare'].plot(kind='hist', figsize=(15,3),bins=100, xlim=(0,50))\n",
    "\n",
    "avgerage_fare.index.names = std_fare.index.names = [\"Survived\"]\n",
    "avgerage_fare.plot(yerr=std_fare,kind='bar',legend=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Age\n",
    "- 年龄\n",
    "- 使用不缺失的年龄数据的均值方差生成的随机数进行填充"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda2\\lib\\site-packages\\ipykernel\\__main__.py:28: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "D:\\Anaconda2\\lib\\site-packages\\ipykernel\\__main__.py:29: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xdec09e8>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nO4C2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd299470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, (axis1,axis2) = plt.subplots(1,2,figsize=(15,4))\n",
    "axis1.set_title('Original Age values - Titanic')\n",
    "axis2.set_title('New Age values - Titanic')\n",
    "\n",
    "# axis3.set_title('Original Age values - Test')\n",
    "# axis4.set_title('New Age values - Test')\n",
    "\n",
    "# get average, std, and number of NaN values in titanic_df\n",
    "average_age_titanic   = titanic_df[\"Age\"].mean()\n",
    "std_age_titanic       = titanic_df[\"Age\"].std()\n",
    "count_nan_age_titanic = titanic_df[\"Age\"].isnull().sum()\n",
    "\n",
    "# get average, std, and number of NaN values in test_df\n",
    "average_age_test   = test_df[\"Age\"].mean()\n",
    "std_age_test       = test_df[\"Age\"].std()\n",
    "count_nan_age_test = test_df[\"Age\"].isnull().sum()\n",
    "\n",
    "# generate random numbers between (mean - std) & (mean + std)\n",
    "rand_1 = np.random.randint(average_age_titanic - std_age_titanic, average_age_titanic + std_age_titanic, size = count_nan_age_titanic)\n",
    "rand_2 = np.random.randint(average_age_test - std_age_test, average_age_test + std_age_test, size = count_nan_age_test)\n",
    "\n",
    "# plot original Age values\n",
    "# NOTE: drop all null values, and convert to int\n",
    "titanic_df['Age'].dropna().astype(int).hist(bins=70, ax=axis1)\n",
    "# test_df['Age'].dropna().astype(int).hist(bins=70, ax=axis1)\n",
    "\n",
    "# fill NaN values in Age column with random values generated\n",
    "titanic_df[\"Age\"][np.isnan(titanic_df[\"Age\"])] = rand_1\n",
    "test_df[\"Age\"][np.isnan(test_df[\"Age\"])] = rand_2\n",
    "\n",
    "# convert from float to int\n",
    "titanic_df['Age'] = titanic_df['Age'].astype(int)\n",
    "test_df['Age']    = test_df['Age'].astype(int)\n",
    "        \n",
    "# plot new Age Values\n",
    "titanic_df['Age'].hist(bins=70, ax=axis2)\n",
    "# test_df['Age'].hist(bins=70, ax=axis4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xdb2f4e0>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd2990b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABB0AAAEFCAYAAACvuJ/PAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcZGV18PHfjANBA/qqqCggaNSTEA2aJgiKikZEWRRB\no6LxFcUtiYnRN8Y1xi2b4gJxARFwCW6swggYZVEhMNKRRcUjg8OAwMBgFHdwmHn/uNWkpuZW36dq\n+ume7vl9Px8+dFc9p58zt04/99bpe28tWrduHZIkSZIkSTNt8VwnIEmSJEmSFiabDpIkSZIkqQqb\nDpIkSZIkqQqbDpIkSZIkqQqbDpIkSZIkqYolc51AqcnJST9mQ5IkSZKkTdTExMSiwcfmTdMBYGJi\nYq5TkCRJkiRJAyYnJ1sf9/IKSZIkSZJUhU0HSZIkSZJUhU0HSZIkSZJUhU0HSZIkSZJUhU0HSZIk\nSZJUhU0HSZIkSZJURdWmQ0Q8NiLOb3n8wIj4VkT8V0S8vGYOkiRJkiRpblRrOkTEG4Bjga0GHt8C\n+ADwNOBJwCsi4gG18pAkSZIkSXOj5pkO1wAHtzz+B8DyzPxJZt4BfBN4YsU8JEmSJEnSHFhS6wdn\n5skRsXPLU/cEbuv7/ufAvUp+5uTkJA9edlVxDtft/gfFY+e77S4+fqTxq/Y4rFImuvWyt400fttH\nv+uur2+8/K3FcQ/a9d0jzSNJkjRbVi3faaTx2z1sZaVMNJ9sf8GWxWNveNIdFTPRjpesKB57/WMf\nMu3z1ZoO0/gZsE3f99sAPy0JnJiYYPUITYeJiYnRMpvHbhix6bA5bZvZds5lo43vfy1uvHy8OEmS\npE3J0uW3jjTe4xoBrLrgyuKx1kxdt4zQdJh6LSYnJ1ufn4umw1XAwyPiPsAvaC6teN8c5CFJkiRJ\nkiqataZDRBwKbJ2Zx0TE64BzaO4pcVxm3jBbeUiSJEmSpNlRtemQmdcCe/S+PrHv8TOAM2rOLUmS\nJEmS5lbNT6+QJEmSJEmbMZsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJ\nkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSp\nCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsO\nkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJ\nkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpCpsOkiRJkiSpiiVzncBCdfNH31s89gGv/ruK\nmUiSJEmSNDc800GSJEmSJFVh00GSJEmSJFVh00GSJEmSJFVR7Z4OEbEY+AiwK3A7cHhmLu97/oXA\n64E7geMy86O1cpEkSZIkSbOv5pkOBwFbZeaewBuBIwaefx/wVODxwOsj4t4Vc5EkSZIkSbOsZtNh\nL+BsgMy8GNht4PkrgHsBWwGLgHUVc5EkSZIkSbOs5kdm3hO4re/7OyNiSWau6X3/HWAS+CVwSmb+\ntOsHTk5O8uAREpicnBxh9MzaYYSxM5HndiOOn8tto/WN+1r4GkqSpE3XTiON9rhGANuzZfFYa6au\nHUcY2/Va1Gw6/AzYpu/7xVMNh4j4I2B/4CHAL4DPRMRzM/OL0/3AiYkJVi+7qjiBiYmJkZOeKTcv\nO7d47EzkecPFx480fi63zUJ3zmWjje9/LW68fLw4SZKkTcnS5beONN7jGgGsuuDK4rHWTF23XLKi\neOzUazGs+VDz8ooLgf0AImIPoL+CbgN+Dfw6M+8EbgG8p4MkSZIkSQtIzTMdTgX2iYiLaO7ZcFhE\nHApsnZnHRMTRwDcj4g7gGuCEirlIkiRJkqRZVq3pkJlrgVcNPPz9vuc/Bnys1vySJEmSJGlu1by8\nQpIkSZIkbcZsOkiSJEmSpCpsOkiSJEmSpCpsOkiSJEmSpCpsOkiSJEmSpCpsOkiSJEmSpCpsOkiS\nJEmSpCpsOkiSJEmSpCpsOkiSJEmSpCpsOkiSJEmSpCpsOkiSJEmSpCpsOkiSJEmSpCpsOkiSJEmS\npCqWzHUCs2X1xz5RPPZ+r3pZxUwkSZIkSdo8eKaDJEmSJEmqwqaDJEmSJEmqoujyiojYGngy8HBg\nLbAc+Gpm/qZibpulmz7yDyONf+BfvLNSJpIkSZIkbZxpmw4RcQ/g7cDBwBXASuC3wOOAD0TEKcC7\nMvMXtROVJEmSJEnzS9eZDp8BjgHelJlr+5+IiMXAAb0xB9VJT5IkSZIkzVddTYdDMnNd2xO9JsSX\nIuKMmU9LkiRJkiTNd11Nh7dFxNAnM/Odw5oSkiRJkiRp89b16RWLev89FjiE5iaSdwD7A39YNzVJ\n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\nFOPGbYzZztW4TWvO2eRrYdx8mNO4TWfO+bImrj/flhsRO9vKj8LWz3P7MeN2HDOu/Kh2/bidiuPW\njx03DsbPddy4cbfpeO4xwjuFmZjvgSO+w5iJObcf4Z1C/3zbj/C7P1+O2+ar8t+K7teiZtPhnsBt\nfd/fGRFLMnNN7zKKmwEi4jU071//s+sHTkxMsHrZVcUJTExM3PX16m9dNmbcxWPF3bzs3LHibrrk\n9OK4/tgbLj5+rLiVF44Utl6uWb5p1ou7fNl4ccsuHS9uXOd+e7TxU3OeU15q68UB3Hj5eHHXXjFe\n3NVXjhf33THjLvvueHEj/NqvF/vN748XNxdO+mH52P48j185XhzXjxn3o/K49WJ/dNx4cQDXf2G8\nuOvOGDOuc3fUHrfygjHjLhov7tpvFcetF3vtaIvb+nOW//KvF7fie2PG/WDMuGvGjCv/hVo/7sbi\nuPViV5w1XhzAijHr9Nrzx4sb17XlO+9xa22D2Fl26nU3FI/tz/O861aNFXfpylvGirtq5eqx4lau\nuLU4rj926fLx4gC+muPl+o3vjRe37Irxtum4rlp286zOd+PXbhpp/EzMuer8HGu+VReMuZ/RjLvl\nkhXFY6dei2HNh5pNh58B2/R9vzgz10x907vnw78BjwAOycx1FXORpJG897P7Fo/9uxecUzETSZIk\naf6qeU+HC4H9ACJiD5qbRfY7GtgKOKjvMgtJkiRJkrRA1DzT4VRgn4i4CFgEHBYRh9JcSnEp8DLg\nG8C5EQHwocw8tWI+kiRJkiRpFlVrOvTu2/CqgYf7r7CueZaFJEmSJEmaY77xlyRJkiRJVdS8vEKS\nNjvv+nz5DSjf9jxvQClpfjj45PJPWTnlkMdVzESSNN94poMkSZIkSarCpoMkSZIkSarCpoMkSZIk\nSarCpoMkSZIkSarCpoMkSZIkSarCpoMkSZIkSarCpoMkSZIkSarCpoMkSZIkSarCpoMkSZIkSarC\npoMkSZIkSarCpoMkSZIkSapiyVwnIEmSJM2ll59y3UjjP37wgytlIkkLj2c6SJIkSZKkKmw6SJIk\nSZKkKmw6SJIkSZKkKmw6SJIkSZKkKmw6SJIkSZKkKmw6SJIkSZKkKmw6SJIkSZKkKmw6SJIkSZKk\nKmw6SJIkSZKkKmw6SJIkSZKkKmw6SJIkSZKkKmw6SJIkSZKkKmw6SJIkSZKkKmw6SJIkSZKkKmw6\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd2de0b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# .... continue with plot Age column\n",
    "\n",
    "# peaks for survived/not survived passengers by their age\n",
    "facet = sns.FacetGrid(titanic_df, hue=\"Survived\",aspect=4)\n",
    "facet.map(sns.kdeplot,'Age',shade= True)\n",
    "facet.set(xlim=(0, titanic_df['Age'].max()))\n",
    "facet.add_legend()\n",
    "\n",
    "# average survived passengers by age\n",
    "fig, axis1 = plt.subplots(1,1,figsize=(18,4))\n",
    "average_age = titanic_df[[\"Age\", \"Survived\"]].groupby(['Age'],as_index=False).mean()\n",
    "sns.barplot(x='Age', y='Survived', data=average_age)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Cabin\n",
    "- 乘客住在哪个船舱\n",
    "- 缺失值太多信息量太少，删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "titanic_df.drop(\"Cabin\",axis=1,inplace=True)\n",
    "test_df.drop(\"Cabin\",axis=1,inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. Family\n",
    "- SibSp：船上兄弟姐妹和配偶的数量\n",
    "- Parch：船上父母和孩子的数量\n",
    "- Family = SibSp+Parch，表示家人的数量\n",
    "- 家里成员越多，将会对是否能活下来有影响\n",
    "- 删除SibSp和Parch列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda2\\lib\\site-packages\\pandas\\core\\indexing.py:141: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  self._setitem_with_indexer(indexer, value)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.text.Text at 0xec7fa20>, <matplotlib.text.Text at 0xdb2f588>]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xda9b630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "titanic_df['Family'] =  titanic_df[\"Parch\"] + titanic_df[\"SibSp\"]\n",
    "titanic_df['Family'].loc[titanic_df['Family'] > 0] = 1\n",
    "titanic_df['Family'].loc[titanic_df['Family'] == 0] = 0\n",
    "\n",
    "test_df['Family'] =  test_df[\"Parch\"] + test_df[\"SibSp\"]\n",
    "test_df['Family'].loc[test_df['Family'] > 0] = 1\n",
    "test_df['Family'].loc[test_df['Family'] == 0] = 0\n",
    "\n",
    "# drop Parch & SibSp\n",
    "titanic_df = titanic_df.drop(['SibSp','Parch'], axis=1)\n",
    "test_df    = test_df.drop(['SibSp','Parch'], axis=1)\n",
    "\n",
    "# plot\n",
    "fig, (axis1,axis2) = plt.subplots(1,2,sharex=True,figsize=(10,5))\n",
    "\n",
    "# sns.factorplot('Family',data=titanic_df,kind='count',ax=axis1)\n",
    "sns.countplot(x='Family', data=titanic_df, order=[1,0], ax=axis1)\n",
    "\n",
    "# average of survived for those who had/didn't have any family member\n",
    "family_perc = titanic_df[[\"Family\", \"Survived\"]].groupby(['Family'],as_index=False).mean()\n",
    "sns.barplot(x='Family', y='Survived', data=family_perc, order=[1,0], ax=axis2)\n",
    "\n",
    "axis1.set_xticklabels([\"With Family\",\"Alone\"], rotation=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6. Sex\n",
    "- 性别\n",
    "- 可以看到小于16岁的小孩存活率很高，所以分成小孩、女人和男人，为Person属性，同时删除Male女性特征，因为存活率很低"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nkP8AOdLPCEfZkAEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xf1fafd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def get_person(passenger):\n",
    "    age,sex = passenger\n",
    "    return 'child' if age < 16 else sex\n",
    "    \n",
    "titanic_df['Person'] = titanic_df[['Age','Sex']].apply(get_person,axis=1)\n",
    "test_df['Person']    = test_df[['Age','Sex']].apply(get_person,axis=1)\n",
    "\n",
    "# No need to use Sex column since we created Person column\n",
    "titanic_df.drop(['Sex'],axis=1,inplace=True)\n",
    "test_df.drop(['Sex'],axis=1,inplace=True)\n",
    "\n",
    "# create dummy variables for Person column, & drop Male as it has the lowest average of survived passengers\n",
    "person_dummies_titanic  = pd.get_dummies(titanic_df['Person'])\n",
    "person_dummies_titanic.columns = ['Child','Female','Male']\n",
    "person_dummies_titanic.drop(['Male'], axis=1, inplace=True)\n",
    "\n",
    "person_dummies_test  = pd.get_dummies(test_df['Person'])\n",
    "person_dummies_test.columns = ['Child','Female','Male']\n",
    "person_dummies_test.drop(['Male'], axis=1, inplace=True)\n",
    "\n",
    "titanic_df = titanic_df.join(person_dummies_titanic)\n",
    "test_df    = test_df.join(person_dummies_test)\n",
    "\n",
    "fig, (axis1,axis2) = plt.subplots(1,2,figsize=(10,5))\n",
    "\n",
    "# sns.factorplot('Person',data=titanic_df,kind='count',ax=axis1)\n",
    "sns.countplot(x='Person', data=titanic_df, ax=axis1)\n",
    "\n",
    "# average of survived for each Person(male, female, or child)\n",
    "person_perc = titanic_df[[\"Person\", \"Survived\"]].groupby(['Person'],as_index=False).mean()\n",
    "sns.barplot(x='Person', y='Survived', data=person_perc, ax=axis2, order=['male','female','child'])\n",
    "\n",
    "titanic_df.drop(['Person'],axis=1,inplace=True)\n",
    "test_df.drop(['Person'],axis=1,inplace=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 7. Pclass\n",
    "- 标记乘客所属船层——第一层(1),第二层(2),第三层(3)\n",
    "- 第3层的人存活率很低，删掉"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd2854e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.factorplot('Pclass','Survived',order=[1,2,3], data=titanic_df,size=5)\n",
    "\n",
    "# create dummy variables for Pclass column, & drop 3rd class as it has the lowest average of survived passengers\n",
    "pclass_dummies_titanic  = pd.get_dummies(titanic_df['Pclass'])\n",
    "pclass_dummies_titanic.columns = ['Class_1','Class_2','Class_3']\n",
    "pclass_dummies_titanic.drop(['Class_3'], axis=1, inplace=True)\n",
    "\n",
    "pclass_dummies_test  = pd.get_dummies(test_df['Pclass'])\n",
    "pclass_dummies_test.columns = ['Class_1','Class_2','Class_3']\n",
    "pclass_dummies_test.drop(['Class_3'], axis=1, inplace=True)\n",
    "\n",
    "titanic_df.drop(['Pclass'],axis=1,inplace=True)\n",
    "test_df.drop(['Pclass'],axis=1,inplace=True)\n",
    "\n",
    "titanic_df = titanic_df.join(pclass_dummies_titanic)\n",
    "test_df    = test_df.join(pclass_dummies_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 构造训练集的输入输出，和测试集的输入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X_train = titanic_df.drop(\"Survived\",axis=1)\n",
    "Y_train = titanic_df[\"Survived\"]\n",
    "X_test  = test_df.drop(\"PassengerId\",axis=1).copy()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 用各种方法进行分类\n",
    "- 用训练集训练和评价\n",
    "\n",
    "## 1. Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.80808080808080807"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "logreg = LogisticRegression()\n",
    "logreg.fit(X_train, Y_train)\n",
    "Y_pred = logreg.predict(X_test)\n",
    "logreg.score(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. Support Vector Machines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.85970819304152635"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svc = SVC()\n",
    "svc.fit(X_train, Y_train)\n",
    "Y_pred = svc.predict(X_test)\n",
    "svc.score(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Random Forests"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.96857463524130194"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "random_forest = RandomForestClassifier(n_estimators=100)\n",
    "random_forest.fit(X_train, Y_train)\n",
    "Y_pred = random_forest.predict(X_test)\n",
    "random_forest.score(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. KNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.82828282828282829"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn = KNeighborsClassifier(n_neighbors = 3)\n",
    "knn.fit(X_train, Y_train)\n",
    "Y_pred = knn.predict(X_test)\n",
    "knn.score(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. Gaussian Naive Bayes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7620650953984287"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gaussian = GaussianNB()\n",
    "gaussian.fit(X_train, Y_train)\n",
    "Y_pred = gaussian.predict(X_test)\n",
    "gaussian.score(X_train, Y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Logistic Regression的各特征相关系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Features</th>\n",
       "      <th>Coefficient Estimate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Age</td>\n",
       "      <td>-0.021727</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Fare</td>\n",
       "      <td>0.000731</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>C</td>\n",
       "      <td>0.602270</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Q</td>\n",
       "      <td>0.289294</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Family</td>\n",
       "      <td>-0.212334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Child</td>\n",
       "      <td>1.816965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Female</td>\n",
       "      <td>2.770328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Class_1</td>\n",
       "      <td>1.982010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Class_2</td>\n",
       "      <td>1.124722</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Features  Coefficient Estimate\n",
       "0      Age             -0.021727\n",
       "1     Fare              0.000731\n",
       "2        C              0.602270\n",
       "3        Q              0.289294\n",
       "4   Family             -0.212334\n",
       "5    Child              1.816965\n",
       "6   Female              2.770328\n",
       "7  Class_1              1.982010\n",
       "8  Class_2              1.124722"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "coeff_df = DataFrame(titanic_df.columns.delete(0))\n",
    "coeff_df.columns = ['Features']\n",
    "coeff_df[\"Coefficient Estimate\"] = pd.Series(logreg.coef_[0])\n",
    "\n",
    "# preview\n",
    "coeff_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 生成结果数据文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "submission = pd.DataFrame({\n",
    "        \"PassengerId\": test_df[\"PassengerId\"],\n",
    "        \"Survived\": Y_pred\n",
    "    })\n",
    "submission.to_csv('Data/titanic.csv', index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
